<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// JS在浏览器中是单线程运行

// 同步程序：多个同步程序按照书写顺序依次执行

// 异步程序：多个异步程序不一定按照书写顺序执行

// 先执行同一个作用域下的所有同步程序，再执行异步程序

// 1 3 4 2
// console.log( '程序 1' );
// setTimeout(function (){
//     console.log( '程序 2' );
// },2000);
// console.log( '程序 3' );
// console.log( '程序 4' );

// 需求：有多个不确定完成时间的异步任务，如何让它们按照指定顺序执行？1 2 3
// setTimeout(()=>{// 异步任务
//     console.log( 1 );
// },1234);
// setTimeout(()=>{// 异步任务
//     console.log( 2 );
// },834);
// setTimeout(()=>{// 异步任务
//     console.log( 3 );
// },2234);


setTimeout(()=>{// 异步任务
    console.log( 1 );
    setTimeout(()=>{// 异步任务
        console.log( 2 );
        setTimeout(()=>{// 异步任务
            console.log( 3 );
        },2234);
    },834);
},1234);

// 多层回调函数嵌套 即 回调地狱 --> 新的解决方案 Promise

</script>
</body>
</html>